package com.xbaoziplus.simple_spring.beans.factory;

import com.xbaoziplus.simple_spring.beans.BeansException;

import java.util.Map;

/**
 * @author xbaozi
 * @version 1.0
 * @interfacename ListableBeanFactory
 * @date 2023-05-09  14:03
 * @description 是一个扩展 Bean 工厂接口的接口
 */
public interface ListableBeanFactory extends BeanFactory {

    /**
     * @description 按照类型返回 Bean 实例
     * @author xbaozi
     * @date 2023/5/9 14:03
     * @param type  指定类型
     * @return Map<String,T>
     **/
    <T> Map<String, T> getBeansOfType(Class<T> type) throws BeansException;

    /**
     * @description 返回注册表中所有 Bean 定义的 name
     * @author xbaozi
     * @date 2023/5/9 14:04
     * @return String
     **/
    String[] getBeanDefinitionNames();
}
